perm filename DRAW.F4[MSS,LCS]2 blob
sn#120522 filedate 1974-09-19 generic text, type T, neo UTF8
00100 C TYPE 'DO DOD.DO'.
00110 C 'G' OR <CR> = GET. 'A'=ADD TO COMBINED FILE.
00200 C PC=PLOT PX=XGP(→PLOT.BIN) PXS,PCS=PLOT SMOOTHED CONTURE
00300 C PXZ,PCZ=PLOT SMOOTHED CONTURE AND FILL IT.
00400 C IN DRAW SECTION: J=JUMP(INVIS. VECT.)
00500 C F=JUMP AND BEGIN FILL SECTION. FX=EXIT AND FILL ALL.
00600 C SINGLE ITEM IS RESTRICTED TO 400 WDS. 10 ITEMS PER FILE.
00610 C 'Q' MAKES CURRENT DPY IN BACKGROUND ON POG2
00700 COMMON /RC/MCLEF(400),IST(4000)
00800 COMMON /FL/IC,N,NQ,RZ,IXRX,XGP,RXGP
00900 COMMON/ZN/SCLEF(400,2),DDD /ED/KED,NEXT,NN,NX,NY,J
01100 COMMON XX(100),G(100),NJ,QF(512),RF(512),S(100),K
01300 DIMENSION JCLEF(10),KCLEF(10),NMLST(10),JST(1)
01400 COMMON/NFF/NF(513) /LL/LL /RZ/RSZ,IPLT,RJB,CENTR
01460 EQUIVALENCE (MM,SCLEF(1,1)),(JCLEF,IST(1490)),(NM,IXRX)
01510 1 ,(GRID,IST(4000)),(KCLEF,IST(1500))
01600 1 ,(NMLST,IST(1510)),(JST,IST(500))
01700 DATA RJB/-20./,CENTR/-26./
01710 RSZ=0
01800 1 MCLEF(1)=0
02000 MM=0
02100 IPLT=0
02200 IPLTX=-1
02300 K=1
02500 91 TYPE 100
02600 55 FORMAT(I,2F)
02700 50 FORMAT(3A1)
02900 XSZ=RSZ
03000 ACCEPT 55,J,RSZ,GRID
03200 IF(RSZ.EQ.0)RSZ=XSZ
03300 MORE=-1
03400 REREAD 50,N,JC,JS
03410 IF(N.EQ.' ')GO TO 91
03500 C PXS,PCS=SMOOTH ONLY; PXZ,PCZ=SMOOTH AND FILL
03600 C TO SAVE SIZE FACTOR WHEN REDRAWING.
03610 IF(N.EQ.'Z')GO TO 1
03700 IF(RSZ.EQ.0)RSZ=9.0
03710 IF(GRID.NE.0.AND.N.NE.'P')CALL GRIDS
03800 IF(N.EQ.'M'.OR.N.EQ.'R')GO TO 192
03850 IF(N.EQ.'V')CALL CNVT
03875 C V=CONVERT FROM OLD FORMAT TO NEW.
03900 C FOR ROTATION OR MOVING AND DISTORTING ENTIRE PICTURE
03910 IF(N.EQ.'F')GO TO 79
03930 C FILLS IT.
03950 IF(JS.EQ.'L')N='Z'
03975 C DEL=DELETE FROM COMB. FILE. (JS='L')
04000 IF(N.EQ.'C'.OR.N.EQ.'A'.OR.N.EQ.'Z')GO TO 999
04100 IF(N.EQ.'X')CALL EXIT
04200 C TYPE X TO FINISH PLOT, OTHERWISE NEW UNIT MAY BE READ IN.
04300 IF(N.EQ.'Q')GO TO 56
04350 C 'Q' MAKES CURRENT DPY IN BACKGROUND ON POG2
04400 IF(N.NE.'D'.AND.N.NE.'E')GO TO 191
04410 CC IF(JC.EQ.'X')MCLEF(1)=0
04420 C TYPE 'DX' TO START NEW DRAWING WITHOUT EXIT. (GOOD AFTER 'Q')
04500
04600 KED=N
04700 MM=MCLEF(1)
04800 IF(MM.NE.0)GO TO 92
04900 C ADD TO DRAWING?
05000 GO TO 3
05010
05020 56 CALL POG2
05030 CALL RDRAW(2,MCLEF(1),MCLEF)
05035 CALL DPYOUT(2)
05040 CALL POG1
05050 GO TO 91
05100 999 CALL CMBN
05200 GO TO 111
05250 192 IF(N.EQ.'R')MCLEF(1)=-MCLEF(1)
05300 CALL SHIFT(MCLEF(2),MCLEF(1))
05400 J=1
05500 JC=0
05600 GO TO 333
05700 191 TYPE 41
05900 IF(JC.EQ.'M'.OR.N.EQ.'S')GO TO 194
06000 MCLEF(1)=0
06100 MM=0
06200 IPLTX=-1
06300 K=1
06400 194 IF(JC.EQ.'M')MORE=0
06500 JQ=JC
06600 JC=0
06700 JM=1
06900 IF(MCLEF(1).EQ.0)GO TO 193
07000 CC JC=JCLEF(2)-1
07100 CC JM=MCLEF(1)+1
07140 JM=MCLEF(1)+1
07200 193 ACCEPT 10,NM,PASS
07210 IF(NM.EQ.' ')NM=LASTNM
07300 IF(NM.EQ.' '.OR.NM.EQ.'99')GO TO 91
07305 C '99' WILL BACKUP
07310 IF(N.NE.'S')LASTNM=NM
07400 CC REWIND 1
07500 IF(N.EQ.'S')GO TO 40
07600 IF(LOOKF(NM).EQ.0)GO TO 191
07700 C 'FAIL' ROUTINE TO CHECK ON LOOKUP
07800 CC CALL IFILE(1,NM)
07900 CC READ(1,5)M,JCLEF
07950 CALL RDSAV(KCLEF,NMLST,M,NM,JST,-1)
07970 C -1=READ
08000 C CAN'T USE 'GM' WITH 'COMBINED' FILE.
08002 CC JQ=0
08005 CC IF(MORE.EQ.0.AND.JCLEF(3).NE.0)JQ=JM-1
08010 J=1
08020 IF(KCLEF(2).EQ.0)GO TO 290
08060 CC IF(PASS.NE.0)CALL ITEM
08100 TYPE 1100
08200 ACCEPT 55,J
08300 J=J+1
08350 C ITEMS ARE NUMBERED 0 THROUGH 9 (10 ITEMS).
08375 IF(J.GT.10)GO TO 191
08400 CC290 IC=KCLEF(K+1)-KCLEF(K)
08420 290 IC=KCLEF(J)+JST(KCLEF(J))-1
08450 CC IF(J.EQ.10)IC=1000
08500 TYPE 110,IC
08600 CC IF(J.LE.1)GO TO 60
08700 C FOR PROTECTION
08800 CC M=JCLEF(J)+1000
08900 CC JZ=JM+1001
09000 CC NX=1001
09100 CC61 READ(1,5)L,L,(MCLEF(K),K=JZ,JM+L)
09200 C PASSES OVER FIRST ITEMS
09300 CC NX=NX+L
09400 CC IF(NX.LT.M)GO TO 61
09500 CC60 NX=JM
09550 CC IC=IC+JM
09600 CC6 READ(1,5,END=7)M,L,(MCLEF(M),M=NX,NX+L-1)
09800 CC NX=NX+L
09900 CC IF(NX.LT.IC)GO TO 6
09910 60 JZ=1
09915 CC IF(MORE.EQ.0)JZ=MM+1
09917 IF(MORE.EQ.0)JZ=JM
09920 L=KCLEF(J)-1
09930 DO 61 K=JZ,JST(L+1)+JZ-1
09935 L=L+1
09937 M=K
09940 61 MCLEF(K)=JST(L)
09960 MCLEF(1)=M
10000 1100 FORMAT(' ITEM NUM?'/)
10100 700 FORMAT(' RESET X-Y POS. ',$)
10200 555 FORMAT(2F)
10300 7 IF(MORE)GO TO 70
10310 CC JM=MM+IST(L+1)
10400 DO 771 K=2,JM
10500 771 IF(MCLEF(K).GE.200000000)GO TO 772
10600 GO TO 70
10700 CC772 M=0
10800 CC L=NX-1
10900 CC DO 773 J=K,L+JM-K
11000 CC M=M+1
11100 CC MCLEF(L+M)=MCLEF(J)
11200 C PUTS FILLER TO END
11300 CC773 MCLEF(J)=MCLEF(JM+M)
11400 C MOVES OUTLINE UP FRONT
11700 CC MCLEF(1)=L-1
11710 772 M=MCLEF(1)
11720 DO 773 L=K,JM
11730 M=M+1
11740 773 MCLEF(M)=MCLEF(L)
11750 K=MJ+K
11760 DO 774 L=JM,M
11770 774 MCLEF(L-K)=MCLEF(L)
11800 GO TO 3
11900 CC77 IF(JC.EQ.0)GO TO 70
12000 CC NX=MCLEF(1)+1
12100 CC NY=MCLEF(NX)-1
12200 C THE WDCNTS
12300 CC DO 71 K=NX,MCLEF(1)+NY
12400 CC71 MCLEF(K)=MCLEF(K+1)
12500 CC MCLEF(1)=MCLEF(1)+NY
12510 CC JCLEF(2)=MCLEF(1)+1
12600
12700 70 IF(N.NE.'P')GO TO 3
12800 IXRX=-1
12900 IF(JQ.NE.'X')IXRX=0
13000 C 0=SEND IT TO CALCOMP
13100 TYPE 700
13200 ACCEPT 555,X,Y
13300 IF(X.NE.0)RJB=X/RSZ
13400 IF(Y.NE.0)CENTR=Y/RSZ
13500 C TYPE .001, .001 TO SET POS. TO 0, -20, -26 IS ORIGINAL.
13600 IF(IPLTX)CALL PLOTS(0)
13700 C DO I NEED THIS?
13710 IF(GRID.GT.0)CALL GRIDS
13800 IPLTX=0
13900 IPLT=-1
14000 3 IF(N.NE.'D')MM=0
14100 C RESET IF NOT GOING TO DRAWIT
14400 333 IF(N.EQ.'P')GO TO 337
14500 CALL DPYSET(1,IST,4000)
14600 CALL DPYBRT(4)
14700 NIST=IST(2)
14800 IF(N.AND.N.NE.'G'.AND.N.NE.'M'.AND.N.NE.'R')GO TO 92
14900 CC337 JJ=MCLEF(1)
15000 337 IF(JS.EQ.'Z')GO TO 306
15100 IF(JS.NE.'S')GO TO 338
15200 CALL SMOOTH(JS)
15300 GO TO 436
15400 338 IC=-1
15500 MM=1
15600 DO 335 K=2,MCLEF(1)
15700 IF(MCLEF(K).LT.200000000)GO TO 335
15800 CC CALL DPYBRT(3)
15900 CC CALL RDRAW(K,MCLEF(1),MCLEF)
15910 CC CALL DPYOUT(1)
16000 CC CALL DPYBRT(4)
16100 CC JJ=K-1
16200 IC=K
16300 GO TO 334
16400 C FOR 1ST LOC. OF MCLEF IN FILLER
16500 335 CONTINUE
16600 334 CALL RDRAW(2,MCLEF(1),MCLEF)
16700 CALL DPYOUT(1)
16800 NIST=IST(2)
16900 CC IF(JJ.EQ.MCLEF(1))GO TO 436
16950 GO TO 436
17000 C NO FILLER
17010 79 IF(IC)GO TO 91
17020 C IC=-1 IF NO FILLER WAS REQUESTED WHILE DRAWING.
17100 TYPE 336
17200 ACCEPT 10,J
17300 JZ=N
17400 CC IF(J.NE.'Y'.AND.J.NE.'S')GO TO 436
17500 KK=0
17600 IF(J.NE.'Y')GO TO 206
17610 CC IF(J.NE.'S')GO TO 206
17700 306 CALL SMOOTH(0)
17750 C SMOOTHS AND FILLS
17800 GO TO 436
17900 206 RR=RSZ
18100 DO 205 J=IC,MCLEF(1)
18200 CALL UNPACK(J,M,N,MCLEF)
18300 KK=KK+1
18400 NF(KK)=0
18500 IF(LL.GE.100000000)NF(KK)=3
18600 QF(KK)=(M+RJB)*RR
18700 205 RF(KK)=(N+CENTR)*RR
18800 NF(1)=KK
18900 CALL FILLQ(QF,RF,NF)
19000 436 IF(JZ.EQ.'P')CALL PLOT(0,0,3)
19100 GO TO 91
19105
19110 66 TYPE 666,NM
19120 GO TO 91
19130 666 FORMAT(' MORE THAN ONE ITEM IN FILE ',A5/)
19200 336 FORMAT(' SMOOTH? ',$)
19300 10 FORMAT(A5,F)
19400 5 FORMAT(12I)
19500 100 FORMAT(' G=GET, GM=GET MORE, =S=SAVE, D=DRAW, X=EXIT, M=MOVE,'/'
19600 1 P=PLOT, PX=XGP, C=COMBINE, A=ADD TO COMB. FILE
19650 1, DEL=DEL. FROM COMB.'/
19700 1' F=FILL, E=EDIT, N1=SIZE, N2=1=GRID '/)
19800 C N1=20 TO CHANGE SHAPE
19900
20000 92 IST(2)=NIST
20100 CALL DRAWIT
20200 N=0
20300 GO TO 3
20400
20500 403 FORMAT(' WRITE OVER ',A5,'.DMD? ',$)
20600 41 FORMAT(' TYPE FILE NAME'/)
20700 C SAVES ONLY ONE PICTURE - USE 999(COMBINE) FOR UP TO 9
20800 40 IF(LOOKF(NM).EQ.0)GO TO 402
20900 TYPE 403,NM
21000 ACCEPT 50,K
21100 IF(K.EQ.'N')GO TO 191
21200 CC402 IC=MCLEF(1)+1
21210 402 NMLST(1)=NM
21220 JCLEF(1)=1
21230 DO 1111 K=2,10
21240 JCLEF(K)=0
21250 1111 NMLST(K)=' '
21260 CALL RDSAV(JCLEF,NMLST,MCLEF(1),NM,MCLEF,0)
21280 NQ=MCLEF(1)
21300 CC CALL OFILE(1,NM)
21400 CC WRITE(1,120),IC
21500 CC CALL SAVE(MCLEF)
21510 CC WRITE(1,1111)NM
21555 CC1111 FORMAT(' 9999 ',A5)
21600 111 TYPE 110,NQ
21610 CC END FILE(1)
21615 CC TYPE 1111,NM
21620 GO TO 91
21700 CC120 FORMAT(' 9999 1 ',I4,' 0 0 0 0 0 0 0 0')
21800 110 FORMAT(' TOTAL WDS=',I3)
21900 END